package co.edu.udea.iw.prestamos.modelo.dao.hibernate;

import java.util.List;

import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import co.edu.udea.iw.prestamos.modelo.dao.PrestamoDAO;
import co.edu.udea.iw.prestamos.modelo.dto.Prestamo;

/**
 * DAO usando el framework Hibernate para manejar los objetos EstadoPrestamo
 * @author Dave Rivera <daverivera90@gmail.com>
 * @since 15-07-2014
 * @version 1.0
 */
@Repository("prestamoDao")
public class PrestamoDAOHIbernate 
		extends CrudDAOHibernate<Prestamo, Integer>
		implements PrestamoDAO {

	public PrestamoDAOHIbernate() {
		super(Prestamo.class);
	}
	
	/**
	 * @see PrestamoDAO#obtenerPrestamosUsuario(String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Prestamo> obtenerPrestamosUsuario(String usuario) {

		return getCurrentSession()
				.createCriteria(Prestamo.class)
				.add(Restrictions.eq("investigador", usuario))
				.list();
	}

	/**
	 * @see PrestamoDAO#obtenerSolicitudesPorDispositivo(int, String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Prestamo> obtenerSolicitudesPorDispositivo(
		int idDispositivo,
		String fecha) {
		return getCurrentSession()
				.createCriteria(Prestamo.class)
				.add(Restrictions.eq("dispositivo", idDispositivo))
				.add(Restrictions.gt("fechaInicio", fecha))
				.list();
	}

}
